package com.zjsru.plan2024.oneday;

/**
 * 1103. 分糖果 II
 * @Author: cookLee
 * @Date: 2024-06-03
 */
public class DistributeCandiesII {
    /**
     * 主
     * \
     * 输入：candies = 7, num_people = 4
     * 输出：[1,2,3,1]
     * 解释：
     * 第一次，ans[0] += 1，数组变为 [1,0,0,0]。
     * 第二次，ans[1] += 2，数组变为 [1,2,0,0]。
     * 第三次，ans[2] += 3，数组变为 [1,2,3,0]。
     * 第四次，ans[3] += 1（因为此时只剩下 1 颗糖果），最终数组变为 [1,2,3,1]。
     * \
     * 输入：candies = 10, num_people = 3
     * 输出：[5,2,3]
     * 解释：
     * 第一次，ans[0] += 1，数组变为 [1,0,0]。
     * 第二次，ans[1] += 2，数组变为 [1,2,0]。
     * 第三次，ans[2] += 3，数组变为 [1,2,3]。
     * 第四次，ans[0] += 4，最终数组变为 [5,2,3]。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        DistributeCandiesII distributeCandies = new DistributeCandiesII();
        int candies = 7;
        int num_people = 4;
        System.out.println(distributeCandies.distributeCandies(candies, num_people));
    }

    /**
     * 分发糖果
     *
     * @param candies    糖果
     * @param num_people num人
     * @return {@link int[]}
     */
    public int[] distributeCandies(int candies, int num_people) {
        int[] ans = new int[num_people];
        //糖果增加标记
        int mark = 0;
        while (candies > 0) {
            ans[mark % num_people] += Math.min(candies, mark + 1);
            candies -= Math.min(candies, mark + 1);
            mark++;
        }
        return ans;
    }

}
